package Main_class;

import java.io.IOException;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Scanner;

import Tool_class.Calculate_free;
import Tool_class.Judge_date;

//账单类，长途通话服务
public class Long_tel_server {
    Calendar c1=java.util.Calendar.getInstance();
    Calendar c2=java.util.Calendar.getInstance();

    public void Input(){

        String s1="2022-04-3 09:25:10";
        String s2="2022-04-3 11:56:11";
        Calendar st=java.util.Calendar.getInstance();
        Calendar et=java.util.Calendar.getInstance();
        int sy,smonth,sd,sh,sm,ss;
        int ey,emonth,ed,eh,em,es;

        while(true){
            @SuppressWarnings("resource")
            Scanner s11=new Scanner(System.in);
            s1=s11.nextLine();
            @SuppressWarnings("resource")
            Scanner s22=new Scanner(System.in);
            s2=s22.nextLine();
            DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd,HH:mm:ss");
            String[] s1Arr=s1.split("[- , :]");
            sy=Integer.parseInt(s1Arr[0]);
            smonth=Integer.parseInt(s1Arr[1]);
            sd=Integer.parseInt(s1Arr[2]);
            sh=Integer.parseInt(s1Arr[3]);
            sm=Integer.parseInt(s1Arr[4]);
            ss=Integer.parseInt(s1Arr[5]);

            String[] s2Arr=s2.split("[- , :]");
            ey=Integer.parseInt(s2Arr[0]);
            emonth=Integer.parseInt(s2Arr[1]);
            ed=Integer.parseInt(s2Arr[2]);
            eh=Integer.parseInt(s2Arr[3]);
            em=Integer.parseInt(s2Arr[4]);
            es=Integer.parseInt(s2Arr[5]);
            System.err.println(s1);
            System.err.println(s2);
            if(sy<1900||sy>2200||ey<1900||ey>2200){
                System.out.print("输入年份错误，范围为1900<=years<=2200,请重输入年份");
            }
            else if(smonth<1||smonth>12||emonth<1||emonth>12){
                System.out.print("输入月份错误，范围为1<=months<=12,请重输入月份");
            }
            /*else if(sd<1||sd>31||ed<1||ed>31){
            System.out.print("输入日错误，范围为1<=days<=31,请重输入日");
            }*/
            else if(sh<0||sh>=24||eh<0||eh>=24){
                System.out.print("输入小时错误，范围为0<=hours<=24,请重输入小时");

            }
            else if(sm<0||sm>60||em<0||em>60){
                System.out.print("输入分钟错误，范围为0<=minutes<=60,请重输入分钟");

            }
            else if(ss<0||ss>60||es<0||es>60){
                System.out.print("输入秒数错误，范围为0<=seconds<=60,请重输入秒数");
            }
            else {
                try
                {
                    st.setTime(df.parse(s1));
                    et.setTime(df.parse(s2));
                }catch(java.text.ParseException e){
                    System.err.println("日期格式输入不正确,程序终止！");
                    System.exit(0);
                }
                break;
            }
        }//输入时间合法
        c1=st;
        c2=et;
    }


    public static void main(String[] args) throws IOException {
        //接收用户输入并对其进行检查
        Long_tel_server ls=new Long_tel_server();
        ls.Input();

        if(ls.c1.compareTo(ls.c2)>0)
        {
            System.err.println("开始通话时间大于结束通话时间，输入有误，本次计费作废！");
            System.exit(0);
        }
        if(ls.c1.compareTo(ls.c2)==0)
        {
            System.err.println("开始通话时间等于结束通话时间，对方未接听，本次计费作废！");
            System.exit(0);
        }
        System.out.println(ls.c1);
        System.out.println(ls.c2);

        //输入时间合法，则进行计算
        Judge_date judge_date=new Judge_date(ls.c1,ls.c2);
        int rs=judge_date.judge();//将通话日期传入计算时长（考虑了时制、秒数，返回通话时长）
        //输出返回通话时长
        //System.out.println(rs);
        if(rs==0){
            System.err.println("通话时间超过20小时，输入有误，本次计费作废！");
            System.exit(0);
        }
        int totalminiute=rs;//按照电话账单最终计算出来的通话时长

        Calculate_free cf=new Calculate_free();//计算一次通话的话费
        double cost=cf.calculate(totalminiute);

        System.out.println();
        System.out.println("本次通话的话费为:"+cost+"美元");

    }
}

